<?php

class Doctrine_Model_UsuarioDoctrineDao {

    public function getEntityManager() {
        if (Zend_Registry::isRegistered('em')) {
            return Zend_Registry::get('em');
        }
        return null;
    }

    public function obtenerTodos() {
        return $this->getEntityManager()
                ->createQuery('select u from Doctrine_Model_Entities_Usuario u')
                ->getResult();
    }
     public function obtenerPorSucursalId($sucursal_id) {
        return $this->getEntityManager()
                ->createQuery('select u from Doctrine_Model_Entities_Usuario u JOIN u.sucursal s where s.id='.$sucursal_id)
                ->getResult();
    }

    public function obtenerPorId($id) {
        return $this->getEntityManager()->find('Doctrine_Model_Entities_Usuario', $id);
    }
    
    public function obtenerPorMail($mail) {
        return $this->getEntityManager()
                        ->createQuery("SELECT u FROM Doctrine_Model_Entities_Usuario u WHERE u.mail = '{$mail}'")
                        ->getResult();
    }
    
    public function guardar(Doctrine_Model_Entities_Usuario $usuario) {
        try {        
            $this->getEntityManager()->persist($usuario);
            $this->getEntityManager()->flush();
            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');
            $logger->log("Error Usuario: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }

    public function eliminar(Doctrine_Model_Entities_Usuario $usuario) {
        try {
            $this->getEntityManager()->remove($usuario);
            $this->getEntityManager()->flush();
            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');
            $logger->log("Error Usuario: " . $e->getMessage(), Zend_Log::ERR);
            return false;
        }
    }

    public function toArrayCollection($coleccion) {
        $arrayCollection = new \Doctrine\Common\Collections\ArrayCollection();
        if (is_array($coleccion)) {
            foreach ($coleccion as $objeto) {
                $arrayCollection->add($objeto);
            }
        } else {
            if ($coleccion != NULL) {
                $arrayCollection->add($coleccion);
            }
        }
        return $arrayCollection;
    }

}

